<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原型的重写</title>
</head>
<body>
<script>
  function Person() {
      this.name = 'person'
  }

  Person.prototype.num =1

  /*
  * 注意这种写法，这叫做原型的重写 如果将原型进行重写之后那么原型上面的constructor属性就不指向构造函数了
  * */
  Person.prototype ={
      num:2,
      /*在发生原型重写之后要将constructor进行重新声明 但是这样写不够严谨，
      * 因为我们自己创建的属性默认都是可访问的*/
      // constructor: Person
  }

  /*最严谨的写法*/
  Object.defineProperty(Person.prototype,'constructor',{
      value: Person,
      enumerable:false
  })




  let p = new Person()
  console.log(p.constructor)



</script>
</body>
</html>